home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / SCSL / cggqrf.z / cggqrf
Encoding:
Text File  |  2002-10-03  |  7.3 KB  |  199 lines

  1.  
  2.  
  3.  
  4. CCCCGGGGGGGGQQQQRRRRFFFF((((3333SSSS))))                                                          CCCCGGGGGGGGQQQQRRRRFFFF((((3333SSSS))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      CGGQRF - compute a generalized QR factorization of an N-by-M matrix A and
  10.      an N-by-P matrix B
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE CGGQRF( N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK, LWORK, INFO
  14.                         )
  15.  
  16.          INTEGER        INFO, LDA, LDB, LWORK, M, N, P
  17.  
  18.          COMPLEX        A( LDA, * ), B( LDB, * ), TAUA( * ), TAUB( * ), WORK(
  19.                         * )
  20.  
  21. IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
  22.      These routines are part of the SCSL Scientific Library and can be loaded
  23.      using either the -lscs or the -lscs_mp option.  The -lscs_mp option
  24.      directs the linker to use the multi-processor version of the library.
  25.  
  26.      When linking to SCSL with -lscs or -lscs_mp, the default integer size is
  27.      4 bytes (32 bits). Another version of SCSL is available in which integers
  28.      are 8 bytes (64 bits).  This version allows the user access to larger
  29.      memory sizes and helps when porting legacy Cray codes.  It can be loaded
  30.      by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
  31.      only one of the two versions; 4-byte integer and 8-byte integer library
  32.      calls cannot be mixed.
  33.  
  34. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  35.      CGGQRF computes a generalized QR factorization of an N-by-M matrix A and
  36.      an N-by-P matrix B:
  37.                  A = Q*R,        B = Q*T*Z,
  38.  
  39.      where Q is an N-by-N unitary matrix, Z is a P-by-P unitary matrix, and R
  40.      and T assume one of the forms:
  41.  
  42.      if N >= M,  R = ( R11 ) M  ,   or if N < M,  R = ( R11  R12 ) N,
  43.                      (  0  ) N-M                         N   M-N
  44.                         M
  45.  
  46.      where R11 is upper triangular, and
  47.  
  48.      if N <= P,  T = ( 0  T12 ) N,   or if N > P,  T = ( T11 ) N-P,
  49.                       P-N  N                           ( T21 ) P
  50.                                                           P
  51.  
  52.      where T12 or T21 is upper triangular.
  53.  
  54.      In particular, if B is square and nonsingular, the GQR factorization of A
  55.      and B implicitly gives the QR factorization of inv(B)*A:
  56.  
  57.                   inv(B)*A = Z'*(inv(T)*R)
  58.  
  59.      where inv(B) denotes the inverse of the matrix B, and Z' denotes the
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. CCCCGGGGGGGGQQQQRRRRFFFF((((3333SSSS))))                                                          CCCCGGGGGGGGQQQQRRRRFFFF((((3333SSSS))))
  71.  
  72.  
  73.  
  74.      conjugate transpose of matrix Z.
  75.  
  76.  
  77. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  78.      N       (input) INTEGER
  79.              The number of rows of the matrices A and B. N >= 0.
  80.  
  81.      M       (input) INTEGER
  82.              The number of columns of the matrix A.  M >= 0.
  83.  
  84.      P       (input) INTEGER
  85.              The number of columns of the matrix B.  P >= 0.
  86.  
  87.      A       (input/output) COMPLEX array, dimension (LDA,M)
  88.              On entry, the N-by-M matrix A.  On exit, the elements on and
  89.              above the diagonal of the array contain the min(N,M)-by-M upper
  90.              trapezoidal matrix R (R is upper triangular if N >= M); the
  91.              elements below the diagonal, with the array TAUA, represent the
  92.              unitary matrix Q as a product of min(N,M) elementary reflectors
  93.              (see Further Details).
  94.  
  95.      LDA     (input) INTEGER
  96.              The leading dimension of the array A. LDA >= max(1,N).
  97.  
  98.      TAUA    (output) COMPLEX array, dimension (min(N,M))
  99.              The scalar factors of the elementary reflectors which represent
  100.              the unitary matrix Q (see Further Details).  B
  101.              (input/output) COMPLEX array, dimension (LDB,P) On entry, the N-
  102.              by-P matrix B.  On exit, if N <= P, the upper triangle of the
  103.              subarray B(1:N,P-N+1:P) contains the N-by-N upper triangular
  104.              matrix T; if N > P, the elements on and above the (N-P)-th
  105.              subdiagonal contain the N-by-P upper trapezoidal matrix T; the
  106.              remaining elements, with the array TAUB, represent the unitary
  107.              matrix Z as a product of elementary reflectors (see Further
  108.              Details).
  109.  
  110.      LDB     (input) INTEGER
  111.              The leading dimension of the array B. LDB >= max(1,N).
  112.  
  113.      TAUB    (output) COMPLEX array, dimension (min(N,P))
  114.              The scalar factors of the elementary reflectors which represent
  115.              the unitary matrix Z (see Further Details).  WORK
  116.              (workspace/output) COMPLEX array, dimension (LWORK) On exit, if
  117.              INFO = 0, WORK(1) returns the optimal LWORK.
  118.  
  119.      LWORK   (input) INTEGER
  120.              The dimension of the array WORK. LWORK >= max(1,N,M,P).  For
  121.              optimum performance LWORK >= max(N,M,P)*max(NB1,NB2,NB3), where
  122.              NB1 is the optimal blocksize for the QR factorization of an N-
  123.              by-M matrix, NB2 is the optimal blocksize for the RQ
  124.              factorization of an N-by-P matrix, and NB3 is the optimal
  125.              blocksize for a call of CUNMQR.
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. CCCCGGGGGGGGQQQQRRRRFFFF((((3333SSSS))))                                                          CCCCGGGGGGGGQQQQRRRRFFFF((((3333SSSS))))
  137.  
  138.  
  139.  
  140.              If LWORK = -1, then a workspace query is assumed; the routine
  141.              only calculates the optimal size of the WORK array, returns this
  142.              value as the first entry of the WORK array, and no error message
  143.              related to LWORK is issued by XERBLA.
  144.  
  145.      INFO    (output) INTEGER
  146.              = 0:  successful exit
  147.              < 0:  if INFO = -i, the i-th argument had an illegal value.
  148.  
  149. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  150.      The matrix Q is represented as a product of elementary reflectors
  151.  
  152.         Q = H(1) H(2) . . . H(k), where k = min(n,m).
  153.  
  154.      Each H(i) has the form
  155.  
  156.         H(i) = I - taua * v * v'
  157.  
  158.      where taua is a complex scalar, and v is a complex vector with v(1:i-1) =
  159.      0 and v(i) = 1; v(i+1:n) is stored on exit in A(i+1:n,i), and taua in
  160.      TAUA(i).
  161.      To form Q explicitly, use LAPACK subroutine CUNGQR.
  162.      To use Q to update another matrix, use LAPACK subroutine CUNMQR.
  163.  
  164.      The matrix Z is represented as a product of elementary reflectors
  165.  
  166.         Z = H(1) H(2) . . . H(k), where k = min(n,p).
  167.  
  168.      Each H(i) has the form
  169.  
  170.         H(i) = I - taub * v * v'
  171.  
  172.      where taub is a complex scalar, and v is a complex vector with v(p-
  173.      k+i+1:p) = 0 and v(p-k+i) = 1; v(1:p-k+i-1) is stored on exit in B(n-
  174.      k+i,1:p-k+i-1), and taub in TAUB(i).
  175.      To form Z explicitly, use LAPACK subroutine CUNGRQ.
  176.      To use Z to update another matrix, use LAPACK subroutine CUNMRQ.
  177.  
  178.  
  179. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  180.      INTRO_LAPACK(3S), INTRO_SCSL(3S)
  181.  
  182.      This man page is available only online.
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.